package com.mjh.zhujianju.service.supervise;

import java.util.List;

import com.livew.framework.base.service.BaseService;
import com.livew.framework.exception.XTBusinessException;
import com.livew.framework.page.PagedResult;
import com.mjh.zhujianju.model.supervise.SupervisionEO;
import com.mjh.zhujianju.vo.supervision.StatisticsVO;
import com.mjh.zhujianju.vo.supervision.SupervisionEstimateVO;
import com.mjh.zhujianju.vo.supervision.SupervisionVO;

public interface SupervisionService extends BaseService<SupervisionEO>{
	
	
	/**
     * 保存
     * @param vo
     * @throws XTBusinessException
     */
	void saveInfo(SupervisionVO vo) throws XTBusinessException;

	
	/**
	 * 更新
	 * @param vo
	 * @throws XTBusinessException
	 */
	void updateInfo(SupervisionVO vo)throws XTBusinessException;


	/**
	 * 查询
	 * @param vo
	 * @throws XTBusinessException
	 */
	SupervisionVO getInfo(Long id) throws XTBusinessException;
	
	/**
	 * 查询
	 * @param vo
	 * @throws XTBusinessException
	 */
	SupervisionVO getAPIInfo(Long id) throws XTBusinessException;


	/**
	 * 查询
	 * @param vo
	 * @throws XTBusinessException
	 */
	PagedResult<SupervisionVO> getVOPage(SupervisionVO vo);


	SupervisionVO queryLetterDetail(Long id) throws XTBusinessException;

	List<SupervisionVO> queryLetterAll() throws XTBusinessException;

	void saveEvaluateInfo(SupervisionEstimateVO supervisionEstimateVO) throws XTBusinessException;

	SupervisionEstimateVO queryLetterEvaluateDetail(Long id,Long userId);

	Integer getUserLetterCount(Long userId);

	List<SupervisionVO> getUserLetterInfos(Long userId);


	/**
	 * 信件
	 * @param eo
	 * @return
	 */

	PagedResult<SupervisionVO> getLetterPage(SupervisionEO eo);

	/**
	 * 查询我创建的督办事项
	 * @param userId
	 * @return
	 */
	List<SupervisionVO> getSupervisionListFromMe(Long userId);

	/**
	 * 查询指派给我的督办事项
	 * @param userId
	 * @return
	 */
	List<SupervisionVO> getSupervisionListToMe(Long userId);

	/**
	 * 查询指派给我的督办事项详情
	 * @param supervisionId
	 * @param userId
	 * @return
	 */
	SupervisionVO querySupervisionScheduleDetail(Long supervisionId,Long userId) throws XTBusinessException;

	/**
	 * 查询所有进行中的信访
	 * @return
	 */
	List<SupervisionVO> getSupervisionLetteringList();

	/**
	 * 查询所有已完成的信访
	 * @return
	 */
	List<SupervisionVO> getSupervisionLetteredList();


	void getStatistics(StatisticsVO vo);

	void deleteSupervision(Long id);


	/**
	 * 未开始的
	 * @return
	 */
	List<SupervisionEO> getNoStartLetteringList();
}
